【Clojure入門】 開発環境とREPL駆動開発
Clojureで本格的な開発を行うにあたり、これまでのようにエディタでソースコードを編集し、REPLまたはコマンドラインから実行する、という操作を繰り返すこともできますが、開発環境としてREPLと統合されたエディタまたはIDEをセットアップして「REPL駆動開発」(REPL-driven development)という開発スタイルを実践すると、Clojureの良さを最大限に引き出すことができて非常に効率的です。
開発環境
State of Clojure Community 2019によると、Clojureユーザのおよそ5割がEmacs、3割がIntelliJ IDEA、1割がVimを開発環境として利用しているようです。
また、最近までにAtomやVisual Studio Codeにも有用なプラグインが登場しています。
ここでは個別のエディタ/IDEのClojure向け設定方法を詳しく説明しませんが、Clojure/ClojureScript関連リンク集のエディタプラグインセクションの情報を参考にしてみてください。
ここまでの節で準備したビルドツールのほかに、お好みのエディタ/IDEに以下のプラグインを設定するのがオススメです。
Clojureプラグイン: clojure-mode, CIDER, Cursive, fireplace.vim, vim-iced, Proto REPL, Calva, etc.
REPL接続、シンタックスハイライト、定義ジャンプなどなど各種Clojure開発支援機能
Lisp編集支援プラグイン: Paredit, Parinfer, Smartparens, etc.
Lisp (S式)の効率的な"structural editing"(構造編集)を実現
括弧虹色化プラグイン: rainbow-delimiters, etc.
対応する括弧を見やすく表示
REPL駆動開発
JavaやScalaでの開発とは大きく異なり、Clojure開発ではメインの開発環境としてのREPLを非常に重視しています。
REPLをエディタ/IDEに接続し、プロジェクトの環境に入り込み、コード変更を素早くREPLに反映させて動作を確かめながら確実に動くコードを積み上げるようにプログラムを書いていきます。
例えばEmacsのCIDERを利用している場合、プロジェクトのClojureファイルをエディタで開いた状態で M-x cider-jack-in (デフォルトのキーバインドでは C-c M-j)と入力することでClojureプロジェクトがREPLに接続されます。
https://gyazo.com/aea119e0e20241f7c22af656bda29bb6
この状態になれば、あとはコードを局所的に評価する、コードをREPLに送る、ドキュメントやソースを読む、定義ジャンプするなどプラグインの提供している各種機能を活用して便利に開発を進められるようになります。
より詳しくはClojure/ClojureScript関連リンク集のREPL駆動開発セクションの情報を参考にしてみてください。
以降の節ではREPLでの動作例を示しながらClojureの基本機能を学んでいきますが、あらかじめ手元にClojureプロジェクトを用意して、REPLをエディタ/IDEに接続した状態で実際に試しながら進めていくと良いでしょう。
cf. IDE(Intellij IDEA) · Scala研修テキスト
#ScalaプログラマのためのClojure入門 #Clojure